package com.tarena.lbs.activity.service.impl;

import com.alibaba.nacos.common.utils.CollectionUtils;
import com.github.pagehelper.PageInfo;
import com.tarena.lbs.activity.dao.mapper.ActivityMapper;
import com.tarena.lbs.activity.dao.repository.ActivityRepository;
import com.tarena.lbs.activity.pojo.po.ActivityPO;
import com.tarena.lbs.activity.pojo.query.ActivityQueryPage;
import com.tarena.lbs.activity.pojo.vo.ActivityVO;
import com.tarena.lbs.activity.service.ActivityService;
import com.tarena.lbs.attach.api.AttachApi;
import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.pager.PageResult;
import com.tarena.lbs.common.enums.PassportResultEnum;
import io.micrometer.core.instrument.binder.BaseUnits;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.xml.transform.Result;
import java.util.List;
import java.util.stream.Collectors;

@Slf4j
@Service
public class ActivityServiceImpl implements ActivityService {
    @Autowired
    private ActivityRepository activityRepository;

    @Override
    public PageResult<ActivityVO> pageList(ActivityQueryPage query) {
        PageResult<ActivityVO> voPage = new PageResult<>();
        PageInfo<ActivityPO> pageInfo = activityRepository.pagesList(query);
        voPage.setPageNo(pageInfo.getPageNum());
        voPage.setPageSize(pageInfo.getPageSize());
        voPage.setTotal(pageInfo.getTotal());
        List<ActivityVO> vos = null;
        List<ActivityPO> pos = pageInfo.getList();
        if (org.springframework.util.CollectionUtils.isEmpty(pos)){
            vos = pos.stream().map(po->{
                ActivityVO adminVO = new ActivityVO();
                BeanUtils.copyProperties(po,adminVO);
                return adminVO;
            }).collect(Collectors.toList());
        }
        voPage.setObjects(vos);
        return voPage;
//        // 创建一个空的分页结果对象，用于存储活动的分页信息和数据
//        PageResult<ActivityVO> voPage = new PageResult<>();
//// 从活动仓库中获取分页信息，根据查询条件
//        PageInfo<ActivityPO> pageInfo = activityRepository.getPages(query);
//// 设置分页结果的当前页号
//        voPage.setPageNo(pageInfo.getPageNum());
//// 设置分页结果的每页大小
//        voPage.setPageSize(pageInfo.getPageSize());
//// 设置分页结果的总记录数
//        voPage.setTotal(pageInfo.getTotal());
//// 初始化活动视图对象列表为null
//        List<ActivityVO> vos = null;
//// 获取当前页的活动数据列表
//        List<ActivityPO> pos = pageInfo.getList();
//// 如果当前页的活动数据列表不为空且不为null
//        if (CollectionUtils.isNotEmpty(pos)) {
//            // 将活动数据列表转换为活动视图对象列表
//            vos = pos.stream().map(po -> {
//                // 创建一个新的活动视图对象
//                ActivityVO vo = new ActivityVO();
//                // 将活动数据对象的属性复制到视图对象中
//                BeanUtils.copyProperties(po, vo);
//                // 返回转换后的视图对象
//                return vo;
//            }).collect(Collectors.toList());
//        }
//// 将转换后的活动视图对象列表设置到分页结果中
//        voPage.setObjects(vos);
//// 返回填充好数据的分页结果对象
//        return voPage;

    }

    @Override
    public ActivityVO getActivityDetail(Integer id) {
        ActivityPO activityPO = activityRepository.selectById(id);
        if(activityPO == null){

            return null;
        }
        ActivityVO vo = new ActivityVO();
        BeanUtils.copyProperties(activityPO, vo);

        vo.getImgIds();
        return  vo;
    }
}
